The present invention relates generally to the field of control of overprovisioning of non-volatile memory devices.
Overprovisioning (OP) is known. Overprovisioning is the difference between: (i) the physical capacity of a non-volatile memory device (for example, a flash drive); and (ii) the logical capacity presented through the operating system (OS) as available for the user. Overprovisioning-type operations (for example, garbage collection, wear-leveling, and bad block mapping operations on an SSD (solid state drive)) lead to data being stored in overprovisioning space (see definition, below, in the Definitions sub-section). The allocated space for overprovisioning lowers the write amplification when a controller writes to the flash memory. Overprovisioning reduces user capacity, but it gives back reduced write amplification, increased endurance, and increased performance.
For purposes of the present document, two categories of non-volatile memory/storage devices will be defined: (i) non-volatile storage devices (NVSD); and (ii) non-volatile memory devices (NVMD). An NVSD is any non-volatile memory/storage device that does not use over-provisioning. An NVMD is any non-volatile memory/storage device that uses over-provisioning. Some conventional NVMDs are solid state, but this is not necessarily required. One currently conventional type of device that is typically used as an NVMD is a solid state flash drive. It should be noted that there may be physical devices (now known or to be developed in the future) which can function either as an NVSD or an NVMD. Typically, overprovisioning is used for memory/storage devices that: (i) only allow block-by-block deletion; and (ii) have a relatively limited lifespan in terms of write/delete cycles. NVMD typically cannot simply write data to a specific logical block address (LBA), but, rather, typically manage the writing with a relatively sophisticated algorithm.